perm filename SORTIT.RLS[206,JMC] blob
sn#057946 filedate 1973-08-11 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 SYMBOLIC PROCEDURE MERGE(U1,V1)
C00005 ENDMK
C⊗;
SYMBOLIC PROCEDURE MERGE(U1,V1);
BEGIN SCALAR U,VV,W,X;
U ← U1; VV ← V1; W ← NIL;
A1: IF NULL U THEN GO TO E1;
A: IF NULL VV THEN GO TO E2;
IF CAR U < CAR VV THEN GO TO C1;
W ← CAR VV . W;
VV ← CDR VV;
GO TO A;
C1: W ← CAR U . W;
U ← CDR U;
GO TO A1;
E1: X ← VV; GO TO E3;
E2: X ← U;
E3: IF NULL W THEN RETURN X;
X ← CAR W . X; W ← CDR W; GO TO E3;
END;
SYMBOLIC PROCEDURE SORT U1;
BEGIN SCALAR U,V,X; INTEGER M;
U ← U1; V ← NIL;
E3: IF NULL U THEN GO TO E4;
M ← 0; X ← LIST CAR U; U ← CDR U;
SORTC: IF NULL V THEN GO TO E1;
IF NULL CAR V THEN GO TO E2;
X ← MERGE(X, CAR V); M ← M+1; V ← CDR V; GO TO SORTC;
E2: V ← X . CDR V;
B1: IF M=0 THEN GO TO E3;
V ← NIL . V; M ← SUB1 M; GO TO B1;
E1: V ← LIST X; GO TO B1;
E4: X ← NIL;
B2: IF NULL V THEN RETURN X;
X ← MERGE(X,CAR V); V ← CDR V; GO TO B2;
END;
END;